package com.fs.common.utils;

import org.apache.commons.lang3.StringUtils;

import java.util.*;

/**
 * @author ACE
 * @desc 字符串处理
 * @creationTime 2019-03-30 15:00
 * @projectName weixinframe
 * @packageName com.fs.utils
 */
public class StringTools {
	/**
	 * 首字母小写	
	 * @param s
	 * @return
	 */
	public static String toLowerCaseFirstOne(String s){
	    if(Character.isLowerCase(s.charAt(0))) {
			return s;
		} else {
			return (new StringBuilder()).append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString();
		}
	}
	

	/**
	 * 首字母大写
	 * @param s
	 * @return
	 */
	public static String toUpperCaseFirstOne(String s){
	    if(Character.isUpperCase(s.charAt(0))) {
			return s;
		} else {
			return (new StringBuilder()).append(Character.toUpperCase(s.charAt(0))).append(s.substring(1)).toString();
		}
	}
	
	/**
	 * 字符串转数组
	 * @param s
	 * @param regex
	 * @return
	 */
	public static String[] toArray(String s,String regex){
		if(StringUtils.isBlank(s)) { return null; }
		if(StringUtils.isBlank(regex)) { regex = ""; }
		return s.split(regex);
	}
	
	/**
	 * 格式化签名
	 * @author DeveloperKK
	 * @date   2017-9-28
	 * @return void
	 * @class  StringTools
	 */
	public static String forMatSign(String sign){
		if(StringUtils.isNotBlank(sign)) {
			//是否以【开头
			if(!sign.startsWith("【")) { 
				sign = "【"+ sign; 
			}
			//是否以】结尾
			if(!sign.endsWith("】")) {
				sign +="】";
			}
		}
		return sign;
	}
	/**
	 * 格式化扩展签名
	 * @author DeveloperKK
	 * @date   2017-9-28
	 * @return void
	 * @class  StringTools
	 */
	public static String forMatExtendSign(String sign){
		if(StringUtils.isNotBlank(sign)) {
			//是否以【开头
			if(!sign.startsWith("(")) {
				sign = "("+ sign;
			}
			//是否以】结尾
			if(!sign.endsWith(")")) {
				sign +=")";
			}
		}
		return sign;
	}
	/**
	 * 获取文件后缀名
	 * 例：hello.txt 得到：.txt
	 * @param str
	 * @return
	 */
	public static String getFileSuffix(String str){
		String suffix = str.substring(str.lastIndexOf("."));
		return suffix;
	}
	/**
	 * 获取去除后缀名的部分 
	 * 例： hello.txt  得到： hello
	 * @param str
	 * @return
	 */
	public static String getRemoveSuffix(String str){
		String value = str.substring(0,str.lastIndexOf("."));
		return value;
	}
	
	/**
	 * @desc 字符串转集合
	 * @param s
	 * @param regex
	 * @return
	 */
	public static List<String> toList(String s,String regex){
		List<String> list = null ;
		String[] array = toArray(s, regex) ;
		if(array!=null) { list = Arrays.asList( array ); }
		return list;
	}
	
	/**
	 * @desc 字符串转非重复集合
	 * @param s
	 * @param regex
	 * @return
	 */
	public static Set<String> toSetList(String s,String regex){
		Set<String> setList = new HashSet<String>();
		List<String> list = toList(s, regex);
		if(list!=null) { setList.addAll(list); }
		return setList;
	}
	
	/**
	 * @desc 字符串转map集合
	 * @param s
	 * @param split
	 * @return
	 */
	public static Map<String,String> toMap(String s,String split){
		Map<String, String> map = new HashMap<>(16);
		String[] array = toArray(s, split);
		if(array!=null){
			for(String item: array){
				if(StringUtils.isNotBlank(item)) { map.put(item, item); }
			}
		}
		return map;
	}
	
	public static String decimalFormat(Object number,Integer len){
		StringBuffer sB = new StringBuffer(".");
		if(len!=null&& len>0){
			for(int i=0;i<len;i++){ sB.append("#");}
		}
    	java.text.DecimalFormat df = new java.text.DecimalFormat("#".concat(sB.toString()));   
    	return df.format(number);
    }
	
}
